package org.lld.im.common.route.algorithm.random;

import org.lld.im.common.enums.UserErrorCode;
import org.lld.im.common.exception.ApplicationException;
import org.lld.im.common.route.RouteHandler;

import java.util.List;
import java.util.concurrent.ThreadLocalRandom;

/**
 * @author: LunBoWang
 * @description: 随机模式
 * 随机模式是最简单的一种负载均衡算法，它的原理是从服务器列表中随机选择一个服务器进行请求处理。
 * 这种算法的优点是实现简单，适用于服务器数量较少的情况。
 * 但是，由于随机选择的服务器可能会出现负载不平衡的情况，因此需要根据实际情况进行调整。
 * @date: 2025/3/30 下午7:25
 * @version: 1.0
 */

public class RandomHandle implements RouteHandler {
    @Override
    public String routeServer(List<String> values, String key) {
        int size = values.size();
        if (size == 0) {
            throw new ApplicationException(UserErrorCode.SERVER_NOT_AVAILABLE);
        }
        int i = ThreadLocalRandom.current().nextInt(size);
        return values.get(i);
    }
}
